# 'r'	读取 （默认）
# 'w'	写入（会先截断之前的内容），文件不存在就创建
# 'x'	写入，如果文件已经存在会产生异常
# 'a'	追加，将内容写入到已有文件的末尾
# 'b'	二进制模式
# 't'	文本模式（默认）
# '+'	更新（既可以读又可以写）
# f.read() 一次性读取整个文件的内容
# f.readline() 读取文件的第一行
# f.readlines() 读取文件的每一行，放在一个列表中（包括换行符等）

def main():
    """
    f=None
    path="./saveFiles/saveTxt.txt"
    try:
        f=open(path,"r",encoding="utf-8")
        #一次性读取整个文件
        # print(f.read())
        #读取文件的第一行
        # print(f.readline())
        #读取文件的每一行，包括换行符，存成列表
        lsit1=f.readlines()
        print(lsit1)
    except FileNotFoundError:
        print(f"{path}未找到！")
    except LookupError:
        print("指定了未知的编码！")
    except UnicodeDecodeError:
        print("读取文件时解码错误！")
    finally:
        if f:
            f.close()

    #二进制读取图片，并且复制一份
    f1=None
    path1="./saveFiles/testImage.jpg"
    try:
        f1=open(path1,"rb")
        data = f1.read()
        print(type(data))  #type函数检查变量的类型，输出： <class 'bytes'>
        # w，不存在就创建，存在就覆盖
        f2= open('./saveFiles/布洛特亨德尔.jpg', 'wb')
        f2.write(data)
    except FileNotFoundError:
        print('指定的文件无法打开.')
    except IOError:
        print('读写文件时出现错误.')
    print('程序执行结束.')
    """
    #读取json数据
    import json
    """
    dump - 将Python对象按照JSON格式序列化到文件中
    dumps - 将Python对象处理成JSON格式的字符串
    load - 将文件中的JSON数据反序列化成对象
    loads - 将字符串的内容反序列化成Python对象
    """
    mydict = {
        'name': '骆昊',
        'age': 38,
        'qq': 957658,
        'friends': ['王大锤', '白元芳'],
        'cars': [
            {'brand': 'BYD', 'max_speed': 180},
            {'brand': 'Audi', 'max_speed': 280},
            {'brand': 'Benz', 'max_speed': 320}
        ]
    }
    fjson=None
    pathjson="./saveFiles/data.json"
    try:
        fjson= open(pathjson, 'w', encoding='utf-8')
        #ensure_ascii=False  防止中文变成unicode
        json.dump(mydict, fjson,ensure_ascii=False)
    except IOError as e:
        print(e)
    print('保存数据完成!')
if __name__=="__main__":
    main()